package de.homer.adapter.interfaces;

import de.homer.adapter.domain.PluginConfiguration;
import de.homer.adapter.domain.PluginMetaInformation;

/**
 * This is the interface every plugin has to implement. Otherwise it would not
 * be recognized as such by the homeR server.
 * 
 * @author André Stannek
 * 
 */
public interface HomeRPlugin {

	/**
	 * Returns a {@link PluginMetaInformation} describing this plugin. The
	 * content of the {@link PluginMetaInformation} should be completely set
	 * except {@link PluginMetaInformation#setJarPath(String)}.<br>
	 * The jarPath must be set when the plugin is loaded and the path is known.<br>
	 * {@link PluginMetaInformation#setPluginClassName(String)} should be the
	 * fully qualified classname as returned by {@link Class#getName()}.
	 * 
	 * @return a {@link PluginMetaInformation} describing this plugin
	 */
	PluginMetaInformation getMetaInformation();

	/**
	 * The configuration of this plugin.
	 * 
	 * @return The configuration of this plugin.
	 */
	PluginConfiguration getConfiguration();
}
